package cn.ondraw.ragflow.service;

import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import org.springframework.http.ResponseEntity;

/**
 * 文件服务接口
 */
public interface RagFlowFileService {
    /**
     * 文件上传
     *
     * @param request 上传请求对象
     * @return 响应实体
     */
    ResponseEntity<?> upload(FileUploadRequest request);

    /**
     * 创建文件或文件夹
     *
     * @param request 创建请求对象
     * @return 响应实体
     */
    ResponseEntity<?> create(FileCreateRequest request);

    /**
     * 获取文件列表
     *
     * @param request 列表请求对象
     * @return 响应实体
     */
    ResponseEntity<?> list(FileListRequest request);

    /**
     * 获取根文件夹
     *
     * @return 响应实体
     */
    ResponseEntity<?> getRootFolder();

    /**
     * 获取父文件夹
     *
     * @param fileId 文件或文件夹 ID
     * @return 响应实体
     */
    ResponseEntity<?> getParentFolder(String fileId);

    /**
     * 获取所有父文件夹
     *
     * @param fileId 文件或文件夹 ID
     * @return 响应实体
     */
    ResponseEntity<?> getAllParentFolders(String fileId);

    /**
     * 删除文件或文件夹
     *
     * @param request 删除请求对象
     * @return 响应实体
     */
    ResponseEntity<?> rm(FileRmRequest request);

    /**
     * 重命名文件或文件夹
     *
     * @param request 重命名请求对象
     * @return 响应实体
     */
    ResponseEntity<?> rename(FileRenameRequest request);

    /**
     * 获取文件
     *
     * @param fileId 文件 ID
     * @return 响应实体
     */
    ResponseEntity<?> get(String fileId);

    /**
     * 移动文件或文件夹
     *
     * @param request 移动请求对象
     * @return 响应实体
     */
    ResponseEntity<?> move(MoveRequest request);
}
